﻿using System;
using EmailJabber.Logic.Commands.Base;
using EmailJabber.Logic;
using EmailJabber.Logic.Logic.BusinessLogic;
using FinancialPersonal.Entities;

namespace FinancialPersonal.Commands
{
	/// <summary>
	/// Description of SetValletValueCommand.
	/// </summary>
	public class AddGoalCommand: CommandBase
	{
		public static Guid ID = new Guid("ECD8089C-069C-4B07-B4A2-5C38613AA3CB");
		
		public AddGoalCommand()
		{
			_aliaces =new string[]{"+кошелек "};
		}
		
		protected override string GetDecription()
		{
			return "Устанавливает сумму кошилька. Пример: +кошелек Автомобиль#31.08.2010#150000000";
		}
		
		protected override System.Collections.Generic.List<Guid> GetTags()
		{
			var result = base.GetTags();
			result.Add(FinancialHelpCommnd.FinanceTag);
			return result;
		}
		
		protected override Guid GetId()
		{
			return ID;
		}
		
		protected override void ExecuteSafe(MessageIM comnd)
		{
			string[] parameters = comnd.Body.Split('#');
			var currentUser = Logic.FinanceLogic.Instance.GetUserByJid(comnd.From);
			if(currentUser==null)
			{
				BL.Instance.Send(MessageIM.GetReply("currentUser==null",comnd));
				return;
			}
			if(parameters.Length==3)
			{
				DateTime endCollect;
				decimal value;
				
				if(decimal.TryParse(parameters[2],out value)&&
				   DateTime.TryParse(parameters[1],out endCollect))
				{					
					GoalEntity goal = new GoalEntity();
					goal.Id = Guid.NewGuid();
					goal.UserId = currentUser.Id;
					goal.BeginCollect = DateTime.Now;
					goal.Description = parameters[0];
					goal.EndCollect = endCollect;
					currentUser.Goals.Add(goal);
					FinancialPersonal.Logic.FinanceLogic.Instance.StoreUser(currentUser);
					BL.Instance.Send(MessageIM.GetReply("OK. id="+goal.Id.ToString(),comnd));
				}
				else
				{
					BL.Instance.Send(MessageIM.GetReply("oops. где ошибка в команде, проверте то что написали.",comnd));
				}
			}
			else
			{
				BL.Instance.Send(MessageIM.GetReply("oops. где ошибка в команде, проверте то что написали.",comnd));
			}			
		}
		
	}
}
